{
 "metadata": {
  "name": "",
  "signature": "sha256:d636d4a1cc1823330a56e0907e5117255bf636e873ec0fbaecf06cae88599aed"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[Sebastian Raschka](www.sebastianraschka.com)  \n",
      "last updated: 05/04/2014\n",
      "\n",
      "- [Link to this IPython Notebook on GitHub](https://github.com/rasbt/python_reference/blob/master/not_so_obvious_python_stuff.ipynb)  \n",
      "- [Link to the GitHub repository](https://github.com/rasbt/python_reference)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#### All code was executed in Python 3.4"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<hr>\n",
      "I am really looking forward to your comments and suggestions to improve and  \n",
      "extend this little collection! Just send me a quick note   \n",
      "via Twitter: [&#64;rasbt](https://twitter.com/rasbt)  \n",
      "or Email: [bluewoodtree@gmail.com](mailto:bluewoodtree@gmail.com)\n",
      "<hr>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Implementing the least squares fit method for linear regression and speeding it up via Cython"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<a name=\"sections\"></a>\n",
      "<br>\n",
      "<br>\n"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#Sections"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "- [Introduction](#introduction)\n",
      "- [Least squares fit implementations](#implementations)\n",
      "- [Generating sample data and benchmarking](#sample_data)\n",
      "- [Compiling the Python code via Cython in the IPython notebook](#cython_nb)\n",
      "- [Bonus: How to use Cython without the IPython magic](#cython_bonus)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<a name=\"introduction\"></a>\n",
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Introduction"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[[back to top](#sections)]"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Linear regression via the least squares method is the simplest approach to performing a regression analysis of a dependent and a explanatory variable. The objective is to find the best-fitting straight line through a set of points that minimizes the sum of the squared offsets from the line.  \n",
      "The offsets come in 2 different flavors: perpendicular and vertical - with respect to the line.  \n",
      "![](https://raw.githubusercontent.com/rasbt/python_reference/master/Images/least_squares_vertical.png)  \n",
      "![](https://raw.githubusercontent.com/rasbt/python_reference/master/Images/least_squares_perpendicular.png)  \n",
      "\n",
      "Here, we will use the more common approach: minimizing the sum of the perpendicular offsets.\n"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In more mathematical terms, our goal is to compute the best fit to *n* points $(x_i, y_i)$ with $i=1,2,...n,$ via linear equation of the form  \n",
      "$f(x) = a\\cdot x + b$.  \n",
      "Here, we assume that the y-component is  functionally dependent on the x-component.  \n",
      "In a cartesian coordinate system, $b$ is the intercept of the straight line with the y-axis, and $a$ is the slope of this line."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In order to obtain the parameters for the linear regression line for a set of multiple points, we can re-write the problem as matrix equation  \n",
      "$\\pmb X \\; \\pmb a = \\pmb y$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$\\Rightarrow\\Bigg[ \\begin{array}{cc}\n",
      "x_1 & 1  \\\\\n",
      "... & 1 \\\\\n",
      "x_n & 1  \\end{array} \\Bigg]$\n",
      "$\\bigg[ \\begin{array}{c}\n",
      "a  \\\\\n",
      "b \\end{array} \\bigg]$\n",
      "$=\\Bigg[ \\begin{array}{c}\n",
      "y_1   \\\\\n",
      "...  \\\\\n",
      "y_n  \\end{array} \\Bigg]$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "With a little bit of calculus, we can rearrange the term in order to obtain the parameter vector $\\pmb a = [a\\;b]^T$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$\\Rightarrow \\pmb a = (\\pmb X^T \\; \\pmb X)^{-1} \\pmb X^T \\; \\pmb y$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "The more classic approach to obtain the slope parameter $a$ and y-axis intercept $b$ would be:"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$a = \\frac{S_{x,y}}{\\sigma_{x}^{2}}\\quad$  (slope)\n",
      "\n",
      "\n",
      "$b = \\bar{y} - a\\bar{x}\\quad$ (y-axis intercept)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "where \n",
      "\n",
      "\n",
      "$S_{xy} = \\sum_{i=1}^{n} (x_i - \\bar{x})(y_i - \\bar{y})\\quad$ (covariance)\n",
      "\n",
      "\n",
      "$\\sigma{_x}^{2} = \\sum_{i=1}^{n} (x_i - \\bar{x})^2\\quad$ (variance)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<a name=\"implementations\"></a>\n",
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "\n",
      "## Least squares fit implementations"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[[back to top](#sections)]"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### 1. The matrix approach"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "First, let us implement the equation:"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$\\pmb a = (\\pmb X^T \\; \\pmb X)^{-1} \\pmb X^T \\; \\pmb y$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "which I will refer to as the \"matrix approach\"."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import numpy as np\n",
      "\n",
      "def lin_lstsqr_mat(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    X = np.vstack([x, np.ones(len(x))]).T\n",
      "    return (np.linalg.inv(X.T.dot(X)).dot(X.T)).dot(y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### 2. The classic approach"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Next, we will calculate the parameters separately, using only standard library functions in Python, which I will call the \"classic approach\"."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$a = \\frac{S_{x,y}}{\\sigma_{x}^{2}}\\quad$  (slope)\n",
      "\n",
      "\n",
      "$b = \\bar{y} - a\\bar{x}\\quad$ (y-axis intercept)"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def classic_lstsqr(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    x_avg = sum(x)/len(x)\n",
      "    y_avg = sum(y)/len(y)\n",
      "    var_x = sum([(x_i - x_avg)**2 for x_i in x])\n",
      "    cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n",
      "    slope = cov_xy / var_x\n",
      "    y_interc = y_avg - slope*x_avg\n",
      "    return (slope, y_interc)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### 3. Using the lstsq numpy function"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "For our convenience, `numpy` has a function that can also compute the leat squares solution of a linear matrix equation. For more information, please refer to the [documentation](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html)."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def numpy_lstsqr(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    X = np.vstack([x, np.ones(len(x))]).T\n",
      "    return np.linalg.lstsq(X,y)[0]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### 4. Using the linregress scipy function"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The last approach is using `scipy.stats.linregress()`, which returns a tuple of 5 different attributes, where the 1st value in the tuple is the slope, and the second value is the y-axis intercept, respectively.  The documentation for this function can be found [here](http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.stats.linregress.html)."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import scipy.stats\n",
      "\n",
      "def scipy_lstsqr(x,y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    return scipy.stats.linregress(x, y)[0:2]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<a name='sample_data'></a>\n",
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Generating sample data and benchmarking"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[[back to top](#sections)]"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In order to test our different least squares fit implementation, we will generate some sample data:\n",
      "- 500 sample points for the x-component within the range [0,500)  \n",
      "- 500 sample points for the y-component within the range [100,600)  \n",
      "\n",
      "where each sample point is multiplied by a random value within\n",
      "the range [0.8, 12)."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import random\n",
      "random.seed(12345)\n",
      "\n",
      "x = [x_i*random.randrange(8,12)/10 for x_i in range(500)]\n",
      "y = [y_i*random.randrange(8,12)/10 for y_i in range(100,600)]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n",
      "#### Visualization"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To check how our dataset is distributed, and how the straight line, which we obtain via the least square fit method, we will plot it in a scatter plot.  \n",
      "Note that we are using our \"matrix approach\" here for simplicity, but after plotting the data, we will check whether all of the four different implementations yield the same parameters."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline\n",
      "from matplotlib import pyplot as plt\n",
      "\n",
      "slope, intercept = lin_lstsqr_mat(x, y)\n",
      "\n",
      "line_x = [round(min(x)) - 1, round(max(x)) + 1]\n",
      "line_y = [slope*x_i + intercept for x_i in line_x]\n",
      "\n",
      "plt.figure(figsize=(8,8))\n",
      "plt.scatter(x,y)\n",
      "plt.plot(line_x, line_y, color='red', lw='2')\n",
      "\n",
      "plt.ylabel('y')\n",
      "plt.xlabel('x')\n",
      "plt.title('Linear regression via least squares fit')\n",
      "\n",
      "ftext = 'y = ax + b = {:.3f} + {:.3f}x'\\\n",
      "        .format(slope, intercept)\n",
      "plt.figtext(.15,.8, ftext, fontsize=11, ha='left')\n",
      "\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Populating the interactive namespace from numpy and matplotlib\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stderr",
       "text": [
        "WARNING: pylab import has clobbered these variables: ['random']\n",
        "`%matplotlib` prevents importing * from pylab and numpy\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAfoAAAH4CAYAAACi3S9CAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdUVMfbwPHv0lm6giAgooBRbNi7GCv2EnvXWOPPnhg1\nGksSxRhjoiYaE0SNsb4xEY0Fe+zGmijGLkZARRERFljYnfeP1Y0ELJRlAedzDkf2lpln7q48e++d\nO6MQQggkSZIkSSqSTIwdgCRJkiRJhiMTvSRJkiQVYTLRS5IkSVIRJhO9JEmSJBVhMtFLkiRJUhEm\nE70kSZIkFWEy0UtGd+jQIcqXL2/sMAqtSpUq8fvvv+drnSNHjuTTTz/N0b7e3t7s3bs3jyN6s/3y\nyy+UKlUKe3t7zp07Z5TPhFRwKeRz9FJ+8fb2JiQkhGbNmhk7FMmIypQpQ0hICE2bNjVI+QcOHKBf\nv378888/Bim/IPLx8eGrr76iffv2mdbNnDmT69ev8+OPPxohMqkgkGf0Ur5RKBQoFApjh6Gn0Wjy\nZJvXJYRAfq+Wnsmrz5YQgtu3b+Pv758n5UlFj0z0ktEdOHCAUqVK6V97e3uzYMECqlatiqOjIz17\n9iQ1NVW/ftu2bQQEBODk5ESDBg3466+/9OuCg4Px9fXF3t6eihUr8uuvv+rXrVy5kgYNGjBhwgSc\nnZ2ZNWtWplhmzpxJ165d6devHw4ODqxatYrHjx/z7rvv4u7ujqenJ9OnT0er1QKg1WqZOHEiLi4u\nlC1bliVLlmBiYqJf36RJE6ZNm0aDBg2wsbHh5s2b/P3337Ro0YLixYtTvnx5Nm3apK9/+/btVKxY\nEXt7ezw9PVmwYAEADx48oF27djg5OVG8eHEaN26c4Xg9uxSemprKuHHj8PDwwMPDg/Hjx6NWq/XH\n2dPTky+//BJXV1fc3d1ZuXJllu/Jhg0bqFWrVoZlCxcupGPHjgAMHDiQ6dOnA/Do0SPatWtHiRIl\nKFasGO3btycqKirLcv9LCKF/z5ydnenRowePHj3Sr+/WrRslS5bE0dGRwMBAIiIiXnisvvzyS1Qq\nFa1btyY6Oho7Ozvs7e25e/dupnpfdJwB5s+fr3+vV6xYgYmJCTdu3AB072dISIh+25UrV9KoUSP9\n67Fjx+Ll5YWDgwM1a9bk8OHD+nXZ/Wxdu3aNwMBAHB0dcXFxoWfPnpnakZqaip2dHRqNhqpVq+Ln\n5wf8+5nYuXMnc+fOZcOGDdjZ2VGtWrXXel+kIkZIUj7x9vYWe/fuzbR8//79wtPTM8N2derUETEx\nMSIuLk5UqFBBLFu2TAghxJkzZ0SJEiXEyZMnhVarFatWrRLe3t5CrVYLIYTYtGmTiImJEUIIsWHD\nBmFjYyPu3r0rhBAiNDRUmJmZiSVLlgiNRiOSk5MzxTJjxgxhbm4utmzZIoQQIjk5WXTq1EmMGDFC\nqFQqcf/+fVG7dm3x3XffCSGEWLp0qfD39xdRUVHi0aNHolmzZsLExERoNBohhBCBgYGidOnSIiIi\nQmg0GhEfHy88PT3FypUrhUajEWfPnhXOzs7i0qVLQggh3NzcxOHDh4UQQsTHx4szZ84IIYSYPHmy\nGDFihEhPTxfp6en6bf57XKdPny7q1asnYmNjRWxsrKhfv76YPn26/jibmZmJGTNmiPT0dLF9+3ah\nVCpFfHx8puOgUqmEnZ2duHr1qn5ZzZo1xYYNG4QQQgwcOFBf7sOHD8XmzZtFcnKyePLkiejWrZvo\n1KlT1h+C/8T71VdfiXr16omoqCihVqvF8OHDRa9evfTbhoaGisTERKFWq8W4ceNEQECAft2LjtWB\nAwcyfJ6y8qJ9d+zYIVxdXcXFixdFUlKS6NWrl1AoFOL69etCCCGaNGkiQkJCMsTXsGFD/es1a9aI\nuLg4odFoxIIFC4Sbm5tITU0VQmT/s9WzZ08xZ84cIYQQqamp4siRIy9sz/Mx/vcYz5w5U/Tr1++l\nx0Mq2uQZvVQgjRkzBjc3N5ycnGjfvj3nzp0DYPny5QwfPpxatWqhUCjo378/lpaWHDt2DICuXbvi\n5uYGQPfu3fHz8+PEiRP6ct3d3Rk1ahQmJiZYWVllWXf9+vXp0KEDAI8fP2bHjh0sXLgQa2trXFxc\nGDduHOvXrwdg48aNjBs3Dnd3dxwdHZkyZUqGy/MKhYKBAwdSoUIFTExM2LlzJ2XKlGHAgAGYmJgQ\nEBBAly5d2LhxIwAWFhZcvHiRhIQEHBwc9GdgFhYWxMTEcOvWLUxNTWnQoEGWsa9du5aPP/4YZ2dn\nnJ2dmTFjRoZ7s+bm5nz88ceYmprSunVrbG1tuXz5cqZyrK2t6dixI+vWrQPg6tWrXL58WX9cAH07\nixUrRufOnbGyssLW1papU6dy8ODBrN/Y//juu+/49NNPcXd3x9zcnBkzZvB///d/+rPagQMHYmNj\no193/vx5njx58tJjJV7j9siL9t24cSODBw/G398fpVKZ5VWfl+nTpw9OTk6YmJgwYcIEUlNTMxzf\n7Hy2LCwsuHXrFlFRUVhYWFC/fv1sxfKMkLeM3ngy0UsF0rNkDbqkk5iYCEBkZCQLFizAyclJ/3Pn\nzh1iYmIAWL16NdWqVdOvu3DhAg8fPtSX9fwtghfx9PTU/x4ZGUlaWholS5bUlzlixAhiY2MBiImJ\nyVDm8/tmVWdkZCQnTpzIEP/atWu5d+8eAD///DPbt2/H29ubJk2acPz4cQA++OADfH19admyJT4+\nPsybNy/L2KOjoyldurT+tZeXF9HR0frXxYsXx8Tk3//2SqVSf2z/q3fv3vpEv3btWn0y/y+VSsXw\n4cPx9vbGwcGBwMBAHj9+/FrJ5datW3Tu3Fl/LPz9/TEzM+PevXtoNBomT56Mr68vDg4OlClTBoVC\nwYMHD156rF7Hi/b97/vp5eX12mUCfPHFF/j7++Po6IiTkxOPHz/WxwvZ+2x9/vnnCCGoXbs2lSpV\nIjQ0NFuxSNIzZsYOQJJex7NOfF5eXnz00UdMnTo10zaRkZEMGzaMffv2Ua9ePRQKBdWqVct0hv2q\nep7fplSpUlhaWvLw4cMMCfKZkiVLZujdnVVP7+fL8/LyIjAwkPDw8Czrr1mzJr/++isajYbFixfT\nvXt3bt++ja2tLV988QVffPEFFy9epGnTptSuXZu33347w/7u7u7cunWLChUqAHD79m3c3d1f2uYX\nad68ObGxsZw/f57169fz1VdfZdmuBQsWcOXKFU6ePEmJEiU4d+4c1atXRwjxyuPt5eVFaGgo9erV\ny7Tuxx9/JCwsjL1791K6dGni4+MpVqyY/v180bF6nQ6fL9q3ZMmS3L59W7/d878D2NjYkJSUpH/9\n/P3/Q4cOMX/+fPbt20fFihUBMsT7/DGDV3+2XF1dWb58OQBHjhyhefPmBAYGUrZs2Ve273kFqQOs\nZBzyjF7KV2q1mpSUFP3P6/Y8fvbHcujQoSxbtoyTJ08ihCApKYnffvuNxMREkpKSUCgUODs7o9Vq\nCQ0N5cKFC9mK779noSVLlqRly5ZMmDCBJ0+eoNVquX79uv4Z5e7du/P1118THR1NfHw88+bNy/SH\n9fky27Vrx5UrV1izZg1paWmkpaXxxx9/8Pfff5OWlsZPP/3E48ePMTU1xc7ODlNTU0DXAfHatWsI\nIbC3t8fU1DTL5NCrVy8+/fRTHjx4wIMHD5g9ezb9+vXL1jF4xtzcnG7duvH+++/z6NEjWrRokaFN\nz9qVmJiItbU1Dg4OxMXFZety94gRI5g6dao+ocbGxhIWFqYv19LSkmLFipGUlJThy93LjpWrqysP\nHz4kISEhyzpftm/37t1ZuXIlly5dQqVSZWpLQEAAmzdvJjk5mWvXrhESEqJ/v588eYKZmRnOzs6o\n1Wpmz579whjg1Z+tTZs2cefOHQAcHR1RKBRZvuev4ubmxq1bt+Tl+zeYTPRSvmrTpg1KpVL/M2vW\nrFc+dvf8+ho1avD999/zv//9j2LFiuHn58fq1asB8Pf3Z+LEidSrVw83NzcuXLhAw4YNsyzndep6\nZvXq1ajVavz9/SlWrBjdunXTn8kNHTqUli1bUqVKFWrUqEHbtm0zJeHny7O1tSU8PJz169fj4eFB\nyZIlmTJlir5n/Jo1ayhTpgwODg4sX76cn376CdD1wG7RogV2dnbUr1+fUaNGERgYmCn+adOmUbNm\nTapUqUKVKlWoWbMm06ZNyzKW19G7d2/27t1Lt27dMrXpWVnjxo0jOTkZZ2dn6tevT+vWrV+7nrFj\nx9KhQwdatmyJvb099erV4+TJkwD079+f0qVL4+HhQaVKlfRXaZ550bEqX748vXr1omzZshQrVizL\nXvcv2jcoKIhx48bRtGlTypUrl2nMh/Hjx2NhYYGrqyuDBg2ib9+++nVBQUEEBQVRrlw5vL29sba2\nznDpP7ufrVOnTlG3bl3s7Ozo2LEjixYtwtvbO8vj+LLj3a1bN0B326ZmzZov3E4qugw6YM7ly5cz\nPBJy48YNPvnkE/r27UuPHj2IjIzE29ubjRs34ujoCMDcuXNZsWIFpqamLFq0iJYtWxoqPEnKczt2\n7GDkyJHcunXL2KFIecTExIRr165l+5K5JBUUBj2jf+uttzh79ixnz57l9OnTKJVKOnfuTHBwMC1a\ntODKlSs0a9aM4OBgACIiItiwYQMRERHs3LmT9957T9/7VpIKopSUFLZv3056ejpRUVHMmjWLLl26\nGDssSZIkvXy7dL9nzx58fX0pVaoUYWFhDBgwAIABAwboBzXZsmULvXr1wtzcHG9vb3x9ffWX8SSp\nIBJCMHPmTIoVK0b16tWpWLEis2fPNnZYUh6Sndmkwi7fet2vX7+eXr16AXDv3j1cXV0BXceZZ48W\nRUdHU7duXf0+np6erz3CliQZg7W1tfwyWsTl5TDIkmQM+ZLo1Wo1W7duzfLZ39fpiPU8X19frl+/\nnucxSpIkSVJB5ePjw7Vr13K0b75cut+xYwc1atTAxcUF0J3FP+tZGhMTQ4kSJQDw8PDI8BzynTt3\n8PDwyFDW9evX9Y/2vIk/M2bMMHoMsv2y7bL9sv2y/fn7k5sT3HxJ9OvWrdNftgfo0KEDq1atAmDV\nqlV06tRJv3z9+vWo1Wpu3rzJ1atXqV27dn6EKEmSJElFksEv3SclJbFnzx6+//57/bLJkyfTvXt3\nQkJC9I/Xge456O7du+uHwfz2229lRxhJkiRJygWDJ3obG5sMYz2DbljIPXv2ZLn91KlTsxzeVNJp\n0qSJsUMwqje5/W9y20G2X7a/ibFDKLQMOmCOISgUCgpZyJIkSZKUK7nJfXIIXEmSJEkqwmSilyRJ\nkqQiTCZ6SZIkSSrCZKKXJEmSpCJMJnpJkiRJKsJkopckSZKkIkwmekmSJEkqwmSilyRJkqQiTCZ6\nSZIkSSrCZKKXJEmSpCJMJnpJkiRJKsJkopckSZKkIkwmekmSJEkqwmSilyRJkqQiTCZ6SZIkSSrC\nZKKXJEmSpCJMJnpJkiRJKsJkopckSZKkIszM2AFIkiRJWYuNjWXHjh2YmJjQtm1bnJycjB2SVAgp\nhBDC2EFkh0KhoJCFLEmSlG03btygdu1AUlLqAOnY2p7nzJkjuLu750v9f/75JzNnzichIYn+/bvQ\nv3/ffKlXylpucp88o5ckSSqAJk78mEePRqDVfgRAauqHTJv2KStWfGvwuv/880/q1GlCSso0wINj\nxz7m8eMERo9+z+B1S3lP3qOXJEkqgKKi7qHV1tC/Tk+vwe3bdw1e78OHDwkMbEVKyhBgAtADlWo1\n8+d/Y/C6AU6cOMHIkWMZO/Z9/v7773yps6iTiV6SJKkAatWqMUrlF8Bj4CFK5Ve0bh1o8HqnTp1N\nQoInYPrcUpN8uWW6f/9+mjZtz7JlJVm8WEmtWo25ePGiwest6mSilyRJKoA+/ngy77zjg6lpCczM\nPBgwoA7jx482eL2XLt1Aq+0P/AB8A/yCiUkPxo4dZvC6P/poHirVV8BkhJhNUtJ4Pv98scHrLepk\nopckSSqAzM3NWb36O1JTVaSkJPHttwsxMTH8n+yGDWtgbb0bCAMOYGLyPs2a+TNx4liD152cnAIU\n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\nYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1006bf2b0>"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n",
      "#### Comparing the results from the different implementations"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "As mentioned above, let us confirm that the different implementation computed the same parameters (i.e., slope and y-axis intercept) as solution for the linear equation."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import prettytable\n",
      "\n",
      "params = [appr(x,y) for appr in [lin_lstsqr_mat, classic_lstsqr, numpy_lstsqr, scipy_lstsqr]]\n",
      "\n",
      "print(params)\n",
      "\n",
      "fit_table = prettytable.PrettyTable([\"\", \"slope\", \"y-intercept\"])\n",
      "fit_table.add_row([\"matrix approach\", params[0][0], params[0][1]])\n",
      "fit_table.add_row([\"classic approach\", params[1][0], params[1][1]])\n",
      "fit_table.add_row([\"numpy function\", params[2][0], params[2][1]])\n",
      "fit_table.add_row([\"scipy function\", params[3][0], params[3][1]])\n",
      "\n",
      "print(fit_table)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[array([   0.95181895,  107.01399744]), (0.95181895319126741, 107.01399744459181), array([   0.95181895,  107.01399744]), (0.95181895319126764, 107.01399744459175)]\n",
        "+------------------+----------------+---------------+\n",
        "|                  |     slope      |  y-intercept  |\n",
        "+------------------+----------------+---------------+\n",
        "| matrix approach  | 0.951818953191 | 107.013997445 |\n",
        "| classic approach | 0.951818953191 | 107.013997445 |\n",
        "|  numpy function  | 0.951818953191 | 107.013997445 |\n",
        "|  scipy function  | 0.951818953191 | 107.013997445 |\n",
        "+------------------+----------------+---------------+\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n",
      "#### Initial performance comparison"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "For a first impression how the performances of the different least squares implementations compare against each other, let us do a quick benchmark using the `timeit` module via IPython's `%timeit` magic."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import timeit\n",
      "\n",
      "for lab,appr in zip([\"matrix approach\",\"classic approach\",\n",
      "                     \"numpy function\",\"scipy function\"],\n",
      "                    [lin_lstsqr_mat, classic_lstsqr, \n",
      "                     numpy_lstsqr, scipy_lstsqr]):\n",
      "    print(\"\\n{}: \".format(lab), end=\"\")\n",
      "    %timeit appr(x, y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "matrix approach: 1000 loops, best of 3: 273 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "classic approach: 100 loops, best of 3: 2.78 ms per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "numpy function: 1000 loops, best of 3: 379 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "scipy function: 1000 loops, best of 3: 598 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "The timing above indicates, that the \"classic\" approach (Python's standard library functions only) is significantly worse in performance than the other implemenations - roughly by a magnitude of 10."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n",
      "<a name=\"cython_nb\"></a>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Compiling the Python code via Cython in the IPython notebook"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[[back to top](#sections)]"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Maybe we can speed things up a little bit via [Cython's C-extensions for Python](http://cython.org). Cython is basically a hybrid between C and Python and can be pictured as compiled Python code with type declarations.  \n",
      "Since we are working in an IPython notebook here, we can make use of the IPython magic: It will automatically convert it to C code, compile it, and load the function.  \n",
      "Just to be thorough, let us also compile the other functions, which already use numpy objects."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%load_ext cythonmagic"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%cython\n",
      "import numpy as np\n",
      "import scipy.stats\n",
      "cimport numpy as np\n",
      "\n",
      "def cy_lin_lstsqr_mat(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    X = np.vstack([x, np.ones(len(x))]).T\n",
      "    return (np.linalg.inv(X.T.dot(X)).dot(X.T)).dot(y)\n",
      "\n",
      "def cy_classic_lstsqr(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    x_avg = sum(x)/len(x)\n",
      "    y_avg = sum(y)/len(y)\n",
      "    var_x = sum([(x_i - x_avg)**2 for x_i in x])\n",
      "    cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n",
      "    slope = cov_xy / var_x\n",
      "    y_interc = y_avg - slope*x_avg\n",
      "    return (slope, y_interc)\n",
      "\n",
      "def cy_numpy_lstsqr(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    X = np.vstack([x, np.ones(len(x))]).T\n",
      "    return np.linalg.lstsq(X,y)[0]\n",
      "\n",
      "def cy_scipy_lstsqr(x,y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    return scipy.stats.linregress(x, y)[0:2]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#### Comparing the compiled Cython code to the original Python code"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import timeit\n",
      "\n",
      "for lab,appr in zip([\"matrix approach\",\"classic approach\",\n",
      "                     \"numpy function\",\"scipy function\"],\n",
      "                    [(lin_lstsqr_mat, cy_lin_lstsqr_mat), \n",
      "                     (classic_lstsqr, cy_classic_lstsqr),\n",
      "                     (numpy_lstsqr, cy_numpy_lstsqr),\n",
      "                     (scipy_lstsqr, cy_scipy_lstsqr)]):\n",
      "    print(\"\\n\\n{}: \".format(lab))\n",
      "    %timeit appr[0](x, y)\n",
      "    %timeit appr[1](x, y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "matrix approach: \n",
        "1000 loops, best of 3: 276 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "1000 loops, best of 3: 266 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "\n",
        "classic approach: \n",
        "100 loops, best of 3: 2.77 ms per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "1000 loops, best of 3: 210 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "\n",
        "numpy function: \n",
        "1000 loops, best of 3: 536 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "1000 loops, best of 3: 372 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "\n",
        "scipy function: \n",
        "1000 loops, best of 3: 613 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "1000 loops, best of 3: 596 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n",
      "As we've seen before, our \"classic\" implementation of the least square method is pretty slow compared to using numpy's functions. This is not surprising, since numpy is highly optmized and uses compiled C/C++ and Fortran code already. This explains why there is no significant difference if we used Cython to compile the numpy-objects-containing functions.  \n",
      "However, we were able to speed up the \"classic approach\" quite significantly, roughly by 1500%.\n",
      "\n",
      "The following 2 code blocks are just to visualize our results in a bar plot."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import timeit\n",
      "\n",
      "funcs =  ['classic_lstsqr', 'cy_classic_lstsqr', \n",
      "          'lin_lstsqr_mat', 'numpy_lstsqr', 'scipy_lstsqr']\n",
      "labels = ['classic approach','classic approach (cython)', \n",
      "          'matrix approach', 'numpy function', 'scipy function']\n",
      "\n",
      "times = [timeit.Timer('%s(x,y)' %f, \n",
      "                      'from __main__ import %s, x, y' %f).timeit(1000)\n",
      "         for f in funcs]\n",
      "\n",
      "times_rel = [times[0]/times[i+1] for i in range(len(times[1:]))]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline\n",
      "import matplotlib.pyplot as plt\n",
      "\n",
      "x_pos = np.arange(len(funcs))\n",
      "plt.bar(x_pos, times, align='center', alpha=0.5)\n",
      "plt.xticks(x_pos, labels, rotation=45)\n",
      "plt.ylabel('time in ms')\n",
      "plt.title('Performance of different least square fit implementations')\n",
      "plt.show()\n",
      "\n",
      "x_pos = np.arange(len(funcs[1:]))\n",
      "plt.bar(x_pos, times_rel, align='center', alpha=0.5, color=\"green\")\n",
      "plt.xticks(x_pos, labels[1:], rotation=45)\n",
      "plt.ylabel('relative performance gain')\n",
      "plt.title('Performance gain compared to the classic least square implementation')\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Populating the interactive namespace from numpy and matplotlib\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10776a978>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1074c1b38>"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<a name=\"cython_bonus\"></a>\n",
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Bonus: How to use Cython without the IPython magic"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[[back to top](#sections)]"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "IPython's notebook is really great for explanatory analysis and documentation, but what if we want to compile our Python code via Cython without letting IPython's magic doing all the work?  \n",
      "These are the steps you would need."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#### 1. Creating a .pyx file containing the the desired code or function."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%file ccy_classic_lstsqr.pyx\n",
      "\n",
      "def ccy_classic_lstsqr(x, y):\n",
      "    \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n",
      "    x_avg = sum(x)/len(x)\n",
      "    y_avg = sum(y)/len(y)\n",
      "    var_x = sum([(x_i - x_avg)**2 for x_i in x])\n",
      "    cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n",
      "    slope = cov_xy / var_x\n",
      "    y_interc = y_avg - slope*x_avg\n",
      "    return (slope, y_interc)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Overwriting ccy_classic_lstsqr.pyx\n"
       ]
      }
     ],
     "prompt_number": 76
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#### 2. Creating a simple setup file"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%file setup.py\n",
      "\n",
      "from distutils.core import setup\n",
      "from distutils.extension import Extension\n",
      "from Cython.Distutils import build_ext\n",
      "\n",
      "setup(\n",
      "    cmdclass = {'build_ext': build_ext},\n",
      "    ext_modules = [Extension(\"ccy_classic_lstsqr\", [\"ccy_classic_lstsqr.pyx\"])]\n",
      ")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Overwriting setup.py\n"
       ]
      }
     ],
     "prompt_number": 77
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<br>\n",
      "<br>\n"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "####3. Building and Compiling"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "!python3 setup.py build_ext --inplace"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "running build_ext\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "cythoning ccy_classic_lstsqr.pyx to ccy_classic_lstsqr.c\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "building 'ccy_classic_lstsqr' extension\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "/usr/bin/clang -fno-strict-aliasing -Werror=declaration-after-statement -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m -c ccy_classic_lstsqr.c -o build/temp.macosx-10.6-intel-3.4/ccy_classic_lstsqr.o\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\u001b[1mccy_classic_lstsqr.c:2040:28: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyObject_AsString'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {\r\n",
        "\u001b[0;1;32m                           ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2037:32: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function\r\n",
        "      '__Pyx_PyUnicode_FromString' [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) {\r\n",
        "\u001b[0;1;32m                               ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2104:26: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyObject_IsTrue'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {\r\n",
        "\u001b[0;1;32m                         ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2159:33: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyIndex_AsSsize_t'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {\r\n",
        "\u001b[0;1;32m                                ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2188:33: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyInt_FromSize_t'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {\r\n",
        "\u001b[0;1;32m                                ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1584:32: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyInt_From_long'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {\r\n",
        "\u001b[0;1;32m                               ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1631:27: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1mfunction '__Pyx_PyInt_As_long' is not\r\n",
        "      needed and will not be emitted [-Wunneeded-internal-declaration]\u001b[0m\r\n",
        "static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {\r\n",
        "\u001b[0;1;32m                          ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1731:26: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1mfunction '__Pyx_PyInt_As_int' is not\r\n",
        "      needed and will not be emitted [-Wunneeded-internal-declaration]\u001b[0m\r\n",
        "static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {\r\n",
        "\u001b[0;1;32m                         ^\r\n",
        "\u001b[0m"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "8 warnings generated.\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\u001b[1mccy_classic_lstsqr.c:2040:28: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyObject_AsString'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {\r\n",
        "\u001b[0;1;32m                           ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2037:32: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function\r\n",
        "      '__Pyx_PyUnicode_FromString' [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) {\r\n",
        "\u001b[0;1;32m                               ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2104:26: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyObject_IsTrue'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {\r\n",
        "\u001b[0;1;32m                         ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2159:33: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyIndex_AsSsize_t'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {\r\n",
        "\u001b[0;1;32m                                ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:2188:33: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyInt_FromSize_t'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {\r\n",
        "\u001b[0;1;32m                                ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1584:32: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1munused function '__Pyx_PyInt_From_long'\r\n",
        "      [-Wunused-function]\u001b[0m\r\n",
        "static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {\r\n",
        "\u001b[0;1;32m                               ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1631:27: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1mfunction '__Pyx_PyInt_As_long' is not\r\n",
        "      needed and will not be emitted [-Wunneeded-internal-declaration]\u001b[0m\r\n",
        "static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {\r\n",
        "\u001b[0;1;32m                          ^\r\n",
        "\u001b[0m\u001b[1mccy_classic_lstsqr.c:1731:26: \u001b[0m\u001b[0;1;35mwarning: \u001b[0m\u001b[1mfunction '__Pyx_PyInt_As_int' is not\r\n",
        "      needed and will not be emitted [-Wunneeded-internal-declaration]\u001b[0m\r\n",
        "static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {\r\n",
        "\u001b[0;1;32m                         ^\r\n",
        "\u001b[0m"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "8 warnings generated.\r\n",
        "/usr/bin/clang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -g build/temp.macosx-10.6-intel-3.4/ccy_classic_lstsqr.o -o /Users/sebastian/Github/pattern_classification/data_fitting/regression/ccy_classic_lstsqr.so\r\n"
       ]
      }
     ],
     "prompt_number": 78
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "#### 4. Importing and running the code"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import ccy_classic_lstsqr\n",
      "\n",
      "%timeit classic_lstsqr(x, y)\n",
      "%timeit cy_classic_lstsqr(x, y)\n",
      "%timeit ccy_classic_lstsqr.c_classic_lstsqr(x, y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100 loops, best of 3: 2.86 ms per loop\n",
        "1000 loops, best of 3: 218 \u00b5s per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      },
      {
       "ename": "AttributeError",
       "evalue": "'module' object has no attribute 'ccy_classic_lstsqr'",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
        "\u001b[0;32m<ipython-input-72-2ce35504d680>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'timeit classic_lstsqr(x, y)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'timeit cy_classic_lstsqr(x, y)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'timeit ccy_classic_lstsqr.ccy_classic_lstsqr(x, y)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mmagic\u001b[0;34m(self, arg_s)\u001b[0m\n\u001b[1;32m   2203\u001b[0m         \u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2204\u001b[0m         \u001b[0mmagic_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2205\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2206\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2207\u001b[0m     \u001b[0;31m#-------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line)\u001b[0m\n\u001b[1;32m   2124\u001b[0m                 \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2125\u001b[0m             \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2126\u001b[0;31m                 \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2127\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2128\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mtimeit\u001b[0;34m(self, line, cell)\u001b[0m\n",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m    191\u001b[0m     \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    192\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 193\u001b[0;31m         \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    195\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mtimeit\u001b[0;34m(self, line, cell)\u001b[0m\n\u001b[1;32m   1011\u001b[0m             \u001b[0mnumber\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1012\u001b[0m             \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1013\u001b[0;31m                 \u001b[0;32mif\u001b[0m \u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0.2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1014\u001b[0m                     \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1015\u001b[0m                 \u001b[0mnumber\u001b[0m \u001b[0;34m*=\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/timeit.py\u001b[0m in \u001b[0;36mtimeit\u001b[0;34m(self, number)\u001b[0m\n\u001b[1;32m    176\u001b[0m         \u001b[0mgc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    177\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m             \u001b[0mtiming\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mit\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    179\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    180\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mgcold\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m<magic-timeit>\u001b[0m in \u001b[0;36minner\u001b[0;34m(_it, _timer)\u001b[0m\n",
        "\u001b[0;31mAttributeError\u001b[0m: 'module' object has no attribute 'ccy_classic_lstsqr'"
       ]
      }
     ],
     "prompt_number": 72
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ccy_classic_lstsqr"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 68,
       "text": [
        "<module 'ccy_classic_lstsqr' (namespace)>"
       ]
      }
     ],
     "prompt_number": 68
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ccy_classic_lstsqr"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 73,
       "text": [
        "<module 'ccy_classic_lstsqr' (namespace)>"
       ]
      }
     ],
     "prompt_number": 73
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from ccy_classic_lstsqr import c_classic_lstsqr"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "ImportError",
       "evalue": "cannot import name 'c_classic_lstsqr'",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
        "\u001b[0;32m<ipython-input-79-b4b6ef83886a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mccy_classic_lstsqr\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mc_classic_lstsqr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
        "\u001b[0;31mImportError\u001b[0m: cannot import name 'c_classic_lstsqr'"
       ]
      }
     ],
     "prompt_number": 79
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}